package com.edu.exam.enums.assessment.plan;

/**
 * 字段约束枚举
 * 定义模板字段的约束条件
 *
 * @author System
 * @version 1.0.0
 */
public enum FieldConstraint {

    /**
     * 必填约束
     */
    REQUIRED("必填", "字段必须填写，不能为空"),

    /**
     * 最大长度约束
     */
    MAX_LENGTH("最大长度", "限制字段内容的最大长度"),

    /**
     * 最小长度约束
     */
    MIN_LENGTH("最小长度", "限制字段内容的最小长度"),

    /**
     * 数值范围约束
     */
    RANGE("数值范围", "限制数值字段的最小值和最大值"),

    /**
     * 正则表达式约束
     */
    PATTERN("正则表达式", "通过正则表达式验证字段格式"),

    /**
     * 邮箱格式约束
     */
    EMAIL_FORMAT("邮箱格式", "验证字段内容是否符合邮箱格式"),

    /**
     * 手机号格式约束
     */
    PHONE_FORMAT("手机格式", "验证字段内容是否符合手机号格式"),

    /**
     * 身份证号约束
     */
    ID_CARD_FORMAT("身份证格式", "验证字段内容是否符合身份证号格式"),

    /**
     * 日期范围约束
     */
    DATE_RANGE("日期范围", "限制日期字段的取值范围"),

    /**
     * 文件类型约束
     */
    FILE_TYPE("文件类型", "限制上传文件的类型"),

    /**
     * 文件大小约束
     */
    FILE_SIZE("文件大小", "限制上传文件的最大大小"),

    /**
     * 唯一性约束
     */
    UNIQUE("唯一性", "确保字段值在系统中唯一"),

    /**
     * 枚举值约束
     */
    ENUM_VALUE("枚举值", "字段值必须是预定义的枚举值之一"),

    /**
     * 自定义验证
     */
    CUSTOM("自定义验证", "通过自定义逻辑验证字段内容"),

    /**
     * 无约束
     */
    NONE("无约束", "字段无特殊约束");

    private final String description;
    private final String detail;

    FieldConstraint(String description, String detail) {
        this.description = description;
        this.detail = detail;
    }

    public String getDescription() {
        return description;
    }

    public String getDetail() {
        return detail;
    }
}